package com.xbongbong.pro.weblist.pojo.dto;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.domain.entity.ext.ConditionsEntityExt;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import com.xbongbong.paas.toolbox.wrap.QueryIgnore;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 工作报告列表
 * @author haibin.zhang
 * @version v1.0
 * @date 2019/2/26 16:33
 * @since v1.0
 */
@Getter
@Setter
public class WorkReportListDTO extends BaseDTO {
    /**
     * 应用id
     */
    @NotNull(message = "{dto.msg.formDataList.appId.NotNull}")
    private Long appId;
    /**
     * 分组id
     */
    private Long listGroupId;
    /**
     * 是否默认分组 2 公海分组 1 系统分组 0是自定义分组
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer defaultGroup;
    /**
     * 特殊列表筛选
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private String creatorId;
    /**
     * 报告类型
     */
    private Integer type;
    /**
     * 表单id
     */
    private Long formId;
    /**
     * 报告日期
     */
    private JSONArray reportDate;
    /**
     * 业务类型
     */
    @NotNull
    private Integer businessType;
    /**
     * 分页
     */
    @NotNull
    private Integer page;
    /**
     * 分页大小
     */
    @NotNull
    private Integer pageSize;
    /**
     * 人员或部门id
     */
    private String pid;
    /**
     * 人员或部门
     */
    private String treeType;
    /**
     * saas移动端顶部筛选项
     */
    private String tab;
    /**
     * 排序字段{"field":"updateTime","sort":"acs"}
     */
    private Map<String,String> sortMap;

    /**
     * 内容模糊查询
     */
    private String nameLike;
    /**
     * 列表页范围筛选
     */
    private JSONObject rangeScreen;
    /**
     * saas标记
     * TODO  后面应该限制非空
     */
    private Integer saasMark;

    private List<ConditionsEntityExt> conditions = new ArrayList<>();

    public void setReportDate(JSONArray reportDate) {
        this.reportDate = reportDate == null ? new JSONArray() : reportDate;
    }
}
